package com.tedu.bill.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * Author：毕龙
 * Date: 2024/5/21 16:21
 */
public class Stack <T>{
    //栈的属性 表示占中的数据
    private T data;

    //栈的私有属性 用来存放栈中的数据
    private List<T> list = new ArrayList<>();

    //向栈中最后一个元素添加
    public void push(T data){
        list.add(data);
    }

    //弹出栈的最后一个元素
    public T pop(){
        if(list.isEmpty()){
            return null;
        }
        //list.size()-1  集合中最后的一个下标
        //获取栈顶元素
        T last = list.get(list.size() - 1);

        //删除栈顶元素
        list.remove(list.size() - 1);
        return last;
    }

    //返回栈顶元素 但不删除栈顶元素
    public T peek(){
        if(list.isEmpty()){
            return null;
        }
        //返回栈顶元素
        return list.get(list.size() - 1);
    }

    public void print(){
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

    //判断该栈是否为空
    public boolean isEmpty(){
       return list.isEmpty();
    }


    //返回栈中元素的数量
    public int size(){
        return list.size();
    }

}
